[アップデート] Amazon Q Developer のドキュメント生成機能を試してみた #AWSreInvent
中川です。
Amazon Q Developer エージェントの新機能としてドキュメント生成が発表されました。
プロジェクトのコードを元に Readme ファイルとデータフロー図を自動生成してくれます。
この新しい機能により、Q Developer は既存のコードベースをより速く理解したり、新しい機能を素早く文書化したりすることができます。
やってみた
早速やってみました。
ドキュメントを参考に CDK のサンプルアプリケーションを作成します。
VSCode で作成したプロジェクトを開き、Amazon Q の拡張機能を表示します。
チャット欄に /doc
と入力してエンターを入れます。
README を作成するか更新するか提案されるので、今回はそのまま「Create a README」を選択します。
プロジェクトを聞かれるので、そのまま「Yes」を選択します。
ソースファイルのスキャン、ソースファイルの要約がされた後に、ドキュメントの生成が行われています。
ドキュメントの生成が完了すると生成されたファイルと、それを受け入れるか, 拒否するか, 再生成するか、表示されます。
見た感じ良さそうだったので、[Accept]をクリックします。
ファイルが保存され、プレビュー結果が自動で表示されました。
ブロックや見出しの使い方が上手で、データフロー図も綺麗に作成してくれることを確認できました。
生成された README の全文は以下より参照ください。
README 全文
AWS CDK Hello World Lambda Function
This project demonstrates how to create a simple "Hello World" Lambda function using AWS CDK with TypeScript.
The AWS Cloud Development Kit (CDK) is an open-source software development framework to define cloud infrastructure in code and provision it through AWS CloudFormation. This project sets up a basic CDK application that deploys a Lambda function with a function URL, allowing you to invoke the function via HTTP requests.
The Lambda function returns a simple "Hello World" message when invoked. This project serves as a starting point for more complex serverless applications and showcases the power of infrastructure as code using AWS CDK.
Repository Structure
.
├── bin
│ └── hello-cdk.ts
├── lib
│ └── hello-cdk-stack.ts
├── test
│ └── hello-cdk.test.ts
├── cdk.json
├── jest.config.js
├── package.json
└── tsconfig.json
bin/hello-cdk.ts
: Entry point for the CDK applicationlib/hello-cdk-stack.ts
: Defines the main CDK stack with the Lambda functiontest/hello-cdk.test.ts
: Contains tests for the CDK stack (currently commented out)cdk.json
: CDK configuration filejest.config.js
: Jest testing framework configurationpackage.json
: Node.js project configuration and dependenciestsconfig.json
: TypeScript compiler configuration
Usage Instructions
Prerequisites
- Node.js (v14.x or later)
- AWS CLI configured with appropriate credentials
- AWS CDK CLI (v2.x)
Installation
-
Clone the repository:
git clone <repository-url> cd hello-cdk
-
Install dependencies:
npm install
Deploying the Stack
-
Synthesize the CloudFormation template:
npx cdk synth
-
Deploy the stack:
npx cdk deploy
After deployment, the CDK will output the function URL. You can use this URL to invoke your Lambda function.
Testing
To run the tests (once implemented):
npm test
Modifying the Lambda Function
The Lambda function is defined inline in lib/hello-cdk-stack.ts
. To modify its behavior, update the code within the lambda.Code.fromInline()
method.
Troubleshooting
-
Issue: CDK deployment fails
- Ensure your AWS CLI is correctly configured with the appropriate permissions
- Check the CloudFormation console for detailed error messages
- Verify that you have the latest version of the CDK CLI installed
-
Issue: Lambda function returns an error
- Check the CloudWatch logs for the Lambda function
- Ensure the function handler matches the one specified in the CDK stack
-
Issue: Unable to invoke the Lambda function URL
- Verify that the function URL is correctly output after deployment
- Ensure your network allows outbound HTTPS connections
For more detailed debugging:
- Enable CDK debug logging:
export CDK_DEBUG=true
- Use the
--debug
flag with CDK commands for verbose output
Data Flow
- User sends an HTTP request to the Lambda function URL
- API Gateway (managed by Lambda function URLs) receives the request and forwards it to the Lambda function
- Lambda function executes, generating a "Hello World" response
- The response is sent back through API Gateway to the user
[User]->[Function URL]->[Lambda]->[Function URL]->[User]
Note: The Lambda function in this project is simple and stateless. For more complex applications, you might introduce additional components like databases or other AWS services.
Infrastructure
This project uses AWS CDK to define the following resources:
Lambda
- HelloWorldFunction: A Node.js Lambda function that returns a "Hello World" message
- Runtime: Node.js 20.x
- Handler: index.handler
- Code: Defined inline in the CDK stack
Lambda Function URL
- Function URL: Provides HTTP(S) endpoint for the Lambda function
- Auth Type: NONE (public access)
CloudFormation Outputs
- myFunctionUrlOutput: The URL of the Lambda function, allowing easy access to the function's endpoint
The infrastructure is defined in the HelloCdkStack
class within lib/hello-cdk-stack.ts
.
さいごに
Amazon Q Developer エージェントの新機能としてドキュメント生成が発表されたので試してみました。
予想以上にきれいなドキュメントが生成されてびっくりしています。
ますます Amazon Q が日本語対応してくれるときが楽しみになりました!